<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // var a;
        // var b;
        // var c;
        // 预解析 ：js 解释性语言 （编译）

        //1. 变量的提升(hosting)，声明前置；
        // js 执行之前 会把变量做提升 ，提升之后再执行；
        // console.log(a);

        // // var a = 10;
        // // console.log(a);

        //  a = 10;
        //  b = 20;
        //  c = 30;


        // 2.函数的提升；预解析 ：无论你在哪里定义函数 ，在预解释代码阶段 都会把函数 提升到最顶部；
        // fn();
        
        // function fn(){
        //     console.log("fn");
        // }
        // fn(); // undefined();
        // console.log(fn);
    //    var  fn = function(){
    //         console.log("fn");
    //     }
    //     fn();

    // 3. 既有变量提升 也有 函数提升；
    // 函数提升优先于变量的提升；
   
    function fn(){
        console.log("fn");
    }
    
    console.log(fn);
    fn();
    // var fn = 10;

    // var fn = 10
    // fn = undefined;
    // console.log(fn);
   
    


    </script>
</body>
</html>